package co.com.claro.servicio.io;


import co.com.claro.comun.conexiondao.comundao;
import co.com.claro.servicio.od.CatalogoOd;
import co.com.claro.servicio.od.CatalogosOd;
import co.com.claro.servicio.od.ClienteOd;
import co.com.claro.servicio.od.UsuarioOd;
import oracle.jdbc.OracleTypes;
import org.apache.log4j.Logger;

import java.io.Serializable;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.ResourceBundle;

/**
 * Created by IntelliJ IDEA.
 * User: Manuel Serrano
 * Date: 20/05/2010
 * Time: 02:59:39 PM
 * To change this template use File | Settings | File Templates.
 */
public class ClienteIo extends comundao implements Serializable {
    private static final Logger logger = Logger.getLogger(ClienteIo.class);

    /** Constructor de la clase
     */
    public ClienteIo() {
    }





    public List<String> obtenerClientesAuto (String transaccionId,String valor) throws Exception {
        final String origen = "ClienteIo.obtenerClientesAuto";
        Connection connection = null;
        CallableStatement statement = null;
        ResultSet result = null;
        List l = new ArrayList();
        long  time = 0;
        List<String> autocompletar = null;
        Long respuestas;
        try {

            logger.info(ResourceBundle.getBundle("mensajeslogs").getString("mensaje.inicio.ino")+ ClienteIo.class+" | "+origen);

            time = System.currentTimeMillis ();

            connection=getConnection();


            statement  = connection.prepareCall ("BEGIN pkg_inventory_suid.pr_nombreauto(?,?,?); END;");

            if(valor!=null){
                statement.setString(1,valor);
            }else{
                statement.setNull(1, OracleTypes.NULL);
            }



            statement.registerOutParameter(2, OracleTypes.NUMBER);
            statement.registerOutParameter(3, OracleTypes.CURSOR);

            statement.execute ();


            respuestas = statement.getLong(2);


            if (respuestas!=0)
                throw (new Exception ("Error de Base de datos",null));
            else
                logger.info(ResourceBundle.getBundle("mensajeslogs").getString("mensaje.inicio.ino")+ ClienteIo.class+" | "+origen+" | 0 respuesta de bd exitosa");

            result = (ResultSet) statement.getObject(3);

            ClienteOd cliente;
            autocompletar=new ArrayList<String>();

            while (result.next ()) {
                autocompletar.add(result.getString(1));
            }

            time = System.currentTimeMillis () - time;

            logger.info(ResourceBundle.getBundle("mensajeslogs").getString("mensaje.exitos.ino")+ ClienteIo.class+" | "+origen);


        }
        catch (Exception ex) {
            logger.error(ex);
        }
        finally {
             closeJdbcObjects (connection, statement, result);
        }

        return (autocompletar);
    }


    public List<ClienteOd> obtenerClientes (String transaccionId,String accion,String valor) throws Exception {
        final String origen = "ClienteIo.obtenerClientes";
        Connection connection = null;
        CallableStatement statement = null;
        ResultSet result = null;
        List l = new ArrayList();
        long  time = 0;
        List<ClienteOd> clientes = null;
        Long respuestas;
        try {

            logger.info(ResourceBundle.getBundle("mensajeslogs").getString("mensaje.inicio.ino")+ ClienteIo.class+" | "+origen);

            time = System.currentTimeMillis ();

            connection=getConnection();


            statement  = connection.prepareCall ("BEGIN pkg_inventory_suid.pr_customers2(?,?,?,?); END;");

            if(accion!=null){
                if(accion.equalsIgnoreCase("CC")){
                    statement.setString(1,valor);
                    statement.setNull(2, OracleTypes.NULL);
                }else{
                    if(accion.equalsIgnoreCase("NC")){
                        statement.setNull(1, OracleTypes.NULL);
                        statement.setString(2,valor);

                    }
                }
            }



            statement.registerOutParameter(3, OracleTypes.NUMBER);
            statement.registerOutParameter(4, OracleTypes.CURSOR);

            statement.execute ();


            respuestas = statement.getLong(3);


            if (respuestas!=0)
                throw (new Exception ("Error de Base de datos",null));
            else
                logger.info(ResourceBundle.getBundle("mensajeslogs").getString("mensaje.inicio.ino")+ ClienteIo.class+" | "+origen+" | 0 respuesta de bd exitosa");

            result = (ResultSet) statement.getObject(4);


            ClienteOd cliente;
            clientes=new ArrayList<ClienteOd>();

            while (result.next ()) {
                cliente= new ClienteOd();
                cliente.setCodservicio(result.getString("CodServicio"));
                cliente.setOt(result.getString("OT"));
                cliente.setCodcliente(result.getString("CodCliente"));
                cliente.setCodclienteonix(result.getString("CodClienteOnix"));
                cliente.setNomcliente(result.getString("NomCliente"));
                cliente.setPais(result.getString("Pais"));
                cliente.setCiudad(result.getString("Ciudad"));



                clientes.add(cliente);
            }

            time = System.currentTimeMillis () - time;

            logger.info(ResourceBundle.getBundle("mensajeslogs").getString("mensaje.exitos.ino")+ ClienteIo.class+" | "+origen);


        }
        catch (Exception ex) {
            logger.error(ex);
        }
        finally {
            closeJdbcObjects (connection, statement, result);
        }

        return (clientes);
    }



}




